/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Dao;

import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import Model.Usuario;
import Util.HibernateUtil;
import javax.persistence.Query;
import org.hibernate.Criteria;
import org.hibernate.cfg.AnnotationConfiguration;


/**
 *
 * @author fagner
 */
public class UsuarioDaoImpl implements UsuarioDao{

    @Override
    public void save(Usuario usuario) {
        Session session = HibernateUtil.getSessionFactory(usuario).openSession();
        Transaction transaction = session.beginTransaction();
        session.save(usuario);
        transaction.commit();
    }

    @Override
    public Usuario getUsuario(Usuario usuario) {
            System.out.println("Obter usuario");
            Session session = HibernateUtil.getSessionFactory(usuario).openSession();
            System.out.println("Factory");
            return (Usuario) session.load(usuario.getClass(), usuario.getLogin());
    }

    @Override
    public List<Usuario> list() {
        Session session = HibernateUtil.getSessionFactory(new Usuario()).openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery("from Usuario").list();
        t.commit();
        return lista;
    }

    @Override
    public void remove(Usuario usuario) {
        Session session = HibernateUtil.getSessionFactory(usuario.getClass()).openSession();
        Transaction transaction = session.beginTransaction();
        session.delete(usuario);
        transaction.commit();
    }

    @Override
    public void update(Usuario usuario) {
        Session session = HibernateUtil.getSessionFactory(usuario.getClass()).openSession();
        Transaction transaction = session.beginTransaction();
        session.update(usuario);
        transaction.commit();
    }
    
}
